1. Field of the Invention
This invention relates generally to electronic data storage, and more particularly to a novel system and method for storing data on a plurality of network servers.
2. Description of the Background Art
Redundant Array of Independent (or Inexpensive) Disks (RAID) is a data storage scheme that was developed to provide an improvement in speed, reliability, and capacity, over single disk systems. A RAID system typically includes multiple hard disks that are used, and appear to the user, as a single disk.
RAID increases reliability by providing data redundancy. In one type of RAID (mirroring), a complete copy of the data is written to two or more separate disks. In another type of RAID (parity), parity data is included on one of the disks, so that if any of the other disks are damaged, the lost data can be recreated by comparing the data on the remaining disks with the parity data.
RAID increases speed by providing parallel access to multiple disks. By distributing portions of a file/data across multiple disks (striping), the data can be written or read much faster. In particular, it takes less time to read/write several small portions simultaneously from/to several disks than it does to read/write the entire file from/to a single disk.
Although RAID systems provide improvements over previous single disk data storage systems, RAID systems still have significant limitations. For example, the disk arrays are generally embodied in a single server, and are therefore susceptible to machine level failures (e.g., power failure, network connection failure, etc.). Additionally, it is difficult to incrementally increase the storage capacity of a RAID server, because an additional single disk cannot generally be added to a RAID system. Further, RAID systems are typically connected to a network via a single physical network connection, thereby limiting the data transfer bandwidth to/from the server. Additionally, single machine systems have practical limits on the number of processing units that can be implemented (e.g., to run client processes, parity calculations, etc.), thereby limiting the number of clients that can be effectively served.
What is needed, therefore, is a data storage system and method that facilitates data storage and retrieval in the event of a machine level failure. What is also needed is a data storage system and method that ensures data integrity, in the event of a machine level failure. What is also needed is a data storage system whose storage capacity can be incrementally augmented with additional single storage units (e.g., single hard disks, servers, etc.). What is also needed is a data storage system that provides an increased data transfer bandwidth between clients and the storage system.